package com.weixing.mall.provider.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weixing.mall.provider.model.domain.Order;
import com.weixing.mall.provider.model.vo.report.delivery.*;

import java.util.List;

/**
 * @author jzy
 * @date 2020/5/30
 */
public interface IDayReportDeliveryService extends IService<Order> {
    /**
     * 01 发货部报表--发货员发货数据报表
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperSendDataVo> shipperSendData(Long shipperId, String startTime, String endTime,String monthTime, Integer orderType,String sortField,String sortType,Page page);

    /**
     * 01 发货部报表--发货员发货数据报表合计
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    DeliveryShipperSendDataVo shipperSendDataTotal(Long shipperId, String startTime, String endTime,String monthTime, Integer orderType,String sortField,String sortType,Page page);

    /**
     * 01 发货部报表--发货员发货数据报表-详细数据
     * @param type 类型  1当天订单 2发外采 3断货/取消 4发库存 5发换码 6发ERP 7ERP留存 8库存留存 9剩余总留存 ，10有单不发
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus   操作状态 1待定 2待货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> shipperSendDataDetail(Integer type,Long customerId,Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 02 发货部报表--发货员发货数据统计
     * @param shipperId 发货员Id
     * @param yearMonth 年月
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序类型 asc 正序  desc 倒序
     * @param page 分页
     * @return  IPage
     */
    IPage<DeliveryShipperSendDataStatisticsVo> shipperSendDataStatistics(Long shipperId, String yearMonth, Integer orderType, String sortField, String sortType,Page page);
    /**
     * 02 发货部报表--发货员发货数据统计-详细数据
     * @param type 类型  1本月接单 2转单 3上月留存订单 4小计 5断货本月订单 6断货上月订单 7断货小计 8上月自采自发 9上月发APP仓 10上月发ERP仓 11上月发换码 12本月自采自发 13本月发APP仓 14本月发ERP仓 15本月发换码 16发货小计 17留存上月订单 18留存本月订单 19留存小计
     * @param yearMonth 年月
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus   操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> shipperSendDataStatisticsDetail(Integer type,String yearMonth, Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 03发货部-发货员换码采购报表
     * @param shipperId 发货员Id
     * @param yearMonth 年月
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序类型 asc 正序  desc 倒序
     * @return  List
     */
    List<DeliveryShipperExchangeReportVo> shipperExchangeReport(Long shipperId, String yearMonth, Integer orderType, String sortField, String sortType);

    /**
     * 03发货部-发货员换码采购报表-详细数据
     * @param type 类型  1总单 2采购 3断货 4库存 5ERP 6留存
     * @param date 年月/年月日 点击的数值的日期
     * @param yearMonth 年月 点击数值的年月筛选条件 例：2020-06
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus 操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField  排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return  IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> shipperExchangeReportDetail(Integer type,String date,String yearMonth,Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 04 发货部报表--外采报表
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus   操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperOutVo> shipperOutReport(Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 05发货部-绩效报表
     * @param shipperId  发货员Id
     * @param actId 活动id
     * @param orderType 订单类型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperPerformanceVo> shipperPerformance(Long shipperId,Long actId,Integer orderType,String startTime,String endTime,String sortField,String sortType,Page page);

    /**
     * 01 发货部报表--发货员发货数据报表-详细数据
     * @param type 类型  1发货数 2断货数 3取消数 4退货数 5实际发货数
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus   操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> shipperPerformanceDetail(Integer type,Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 06发货部-留存发货数据报表
     * @param shipperId 发货员Id
     * @param yearMonth 年月
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序类型 asc 正序  desc 倒序
     * @return  List
     */
    List<DeliveryShipperRemainReportVo> shipperRemainReport(Long shipperId, String yearMonth, Integer orderType, String sortField,String groupByType, String sortType);

    /**
     * 06发货部-留存发货数据报表-详细数据
     * @param type 类型  1总单 2采购 3断货 4库存 5ERP 6留存
     * @param date 年月/年月日 点击的数值的日期
     * @param yearMonth 年月 点击数值的年月筛选条件 例：2020-06
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus 操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField  排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return  IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> shipperRemainReportDetail(Integer type,String date,String yearMonth,Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);

    /**
     * 07 发货部报表--发货部发货整体报表
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryWholeReportVo> wholeReport(Long shipperId,Long actId, String startTime, String endTime,String monthTime, Integer orderType,String sortField,String sortType,Page page);

    /**
     * 07 发货部报表--发货部发货整体报表-详细数据
     * @param type 类型  1总订单 2发出 3断货 4取消 5有现货 6待定 7待货 8置换发出 9置换未发  10APP仓发出 11APP仓未发
     * @param date 日期 点击的数值的日期
     * @param shipperId 发货员Id
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param orderType 订单类型 1正价订单 2代理商活动订单 3秒杀活动订单
     * @param orderStatus 订单情况 1正常订单 2换货订单
     * @param itemStatus   操作状态 1待定 2带货 3有现货 4需外采 5内部换货 6断货 7取消 8待处理 9退货
     * @param userName 用户名
     * @param sortField 排序字段
     * @param sortType 排序  asc 正序  desc 倒序
     * @param page 分页
     * @return IPage
     */
    IPage<DeliveryShipperSendDataDetailVo> wholeReportDetail(Integer type,String date,Long customerId, Long shipperId, String startTime, String endTime, Integer orderType, Integer orderStatus, Integer itemStatus, String userName, String sortField, String sortType,Page page);
}
